
/************************ (C) COPYRIGHT 2015 FT *******************************
* File Name          :
* Author             : Application Team  Tom.wang
* Version            : V2.0.0
* Date               : 06/15/2015
* Description        :
********************************************************************************
/*******************************************************************************
* All Rights Reserved
*******************************************************************************/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __FLASH_H
#define __FLASH_H
#include "FU68xx_4_Type.h"

#define FLASH_DON_TOCH_SECTOR_ADDR 0x3f80
#define FLA_KEY5A 0x5a          /***解锁key***/
#define FLA_KEY1F 0x1f          /***解锁key***/
#define FLA_SECTOR_START 0x0000 /***扇区起始地址***/
#define FLA_SECTOR_WIDT 128U    /***扇区宽度***/

#define FLA_MAX_POST_START 112U /***最大角度存储地址地址***/
#define FLA_MAX_POST_WIDT 64U   /***最大角度存储地址宽度64*2  共计1个扇区***/

#define FLA_LAST_POST_START 113U /***位置存储起始地址  ***/
#define FLA_LAST_POST_WIDT 256U  /***最大角度存储地址宽度256*4  共计四个扇区 BAYT***/

#define FLA_LAST_POST_START 113U /***位置存储起始地址***/
#define FLA_LAST_POST_WIDT 256U

#define FLA_DIAGNOSTIC_START 117U /***位置诊断数据的起始地址***/
#define FLA_DIAGNOSTIC_WIDT 8U
#define FLA_DIAGNOSTIC_LENGTH 16U
typedef struct
{
  uint8 Save_Diagnostic_flag : 2; /*诊断数据写入标志*/
  uint8 Save_Maxpostflag : 2;     /*最大位置写入标志*/
  uint8 Save_Lastpostflag : 2;    /*当前位置写入标志*/
  uint8 : 2;                      /*空域*/
  uint8 MAX_FlashCont;            /*最大位置下次写入的位置*/
  uint8 POS_FlashCont;            /*实际位置下次写入的位置*/
  uint8 Diagnostic_Cont;          /*诊断数据下次写入的位置*/
  uint16 Post_Max;                /*最大机械角度*/
  uint16 Post_LAST;               /*最新的位置*/
} POST_TypeDef;

typedef struct
{
  uint8 NAD;                  /*电机的机型号*/
  uint8 Hardware_Version;     /*硬件版本号*/
  uint8 Low_Torque;           /*低扭矩*/
  uint8 Rated_Torque;         /*额定扭矩*/
  uint8 Boost0;               /*boost0*/
  uint8 Boost1;               /*boost1*/
  uint8 Stalled_Angle;        /*堵转偏差角度*/
  uint8 Fault_Boundary_Angle; /*故障边界角度*/
  uint8 Open_Ratio_Angle;     /*开比边界角度*/
  uint8 Test_Mode;            /*测试模式标志位*/
  uint8 CW_CCW;               /*CW/CCW配置*/
  uint8 Voltage_Lowtime;      /*写低电压持续时间*/
  uint8 Voltage_Hightime;     /*写高电压持续时间*/
  uint8 Car_model;            /*车型号*/
  uint8 GAC_Number;           /*GAC版本号*/
  uint8 Reserved;             /*预留*/
} Diagnostic;                 //诊断数据结构体

extern Diagnostic Diagnostic_Data; //诊断数据
extern POST_TypeDef xdata Fla_Post;

extern uint16 Read_Maxpost(void);
extern uint16 Read_Lastpost(void);
extern void Save_Maxpost(uint16 post);
extern void Save_Lastpost(uint16 post);

extern void Read_Diagnostic(void);
extern void Save_Diagnostic(void);

extern void Save_DATA(void);
#endif